package com.zhdl.modules.autopick.service;

/**
 * 电机相关动作
 */
public interface MotorActionService {

    /**
     * 电机获取状态
     */
    void motorInitGetStatus();

    /**
     * 电机移动 - 1-4号漏斗 - 脉冲数设置
     */
    void motorWriteRun(String address, int distance);

    /*
        ----------------------以下为西区电机运动------------------------
     */

    /**
     * 电机找原点
     */
    void motorInitZero();

    /**
     * 电机移动 - 第一个动作 - motorOneStep
     * 1:需动态设置110A 脉冲数 1101设置第0段开始 1105第1段结束     运动使能 3100设置 17  读取状态
     */
    void motorOneStep(int distance);

    /**
     * IO动作 - 推出拉杆
     */
    void motorGoOpenBar();

    /**
     * 电机移动 - 第二个动作 - motorTwoStep
     * 2:读取到第1段结束 运动使能 3100设置 1  打开伸缩杆气缸 1101设置第1段开始 1105第2段结束  运动使能 3100设置 17 读取状态
     */
    void motorTwoStep(int distance);

    /**
     * 电机移动 - 第三个动作 - motorThreeStep
     * 3:读取到第2段结束 并且读到 盖子打开信号  运动使能 3100设置 1收回伸缩杆气缸 打开转运料斗电磁阀
     * IO控制 - 收回拉杆 打开电磁阀
     */
    void motorThreeStep();

    /**
     * 电机移动 - 第四个动作 - motorFourStep
     * 4:等待固定时间料下完,关闭转运料斗电磁阀
     * IO控制 - 关闭电磁阀
     */
    void motorFourStep();

    /**
     * 电机移动 - 第五个动作 - motorFiveStep
     * 5:1101设置第2段开始 1105第3段结束     运动使能 3100设置 17  读取状态
     */
    void motorFiveStep(int distance);

    /**
     * IO控制 - 伸出杆儿
     */
    void motorBackOpenBar();

    /**
     * IO控制 - 收回杆儿
     */
    void motorBackCloseBar();

    /**
     * 电机移动 - 第六个动作 - motorSixStep
     * 6:读到第三段位置结束 运动使能 3100设置 1 打开伸缩杆 1101设置第3段开始 1105第4段结束   运动使能 3100设置 17 读取状态
     */
    void motorSixStep(int distance);

    /**
     * 电机移动 - 第七个动作 - motorSevenStep
     * 7:读取到第4段结束 并且读到盖子关闭信号  运动使能 3100设置 1, 需动态设置1120 脉冲数  1101设置第4段开始 1105第5段结束 运动使能 3100设置 17 读取状态
     */
    void motorSevenStep(int distance);

    /**
     * 电机移动 - 第八个动作 - motorEightStep
     * 8:读取到第5段结束 并且读到原点信号 设置 运动使能 3100设置 0 标记电机完成流程
     */
    void motorEightStep();

    /*
        ----------------------以下为东区电机运动------------------------
     */

    /**
     * 电机运动 - 初始化
     */
    void motorEasternInit();

    /**
     * 电机运动 - 获取当前运动
     */
    void motorEasternStatus();

    /**
     * 电机运动 - 打开料盒
     */
    void motorEasternOpenFunnel();

    /**
     * 电机运动 - 关闭料盒
     */
    void motorEasternCloseFunnel();

}
